//index.js
//获取应用实例
const app = getApp()

//app.js
import {$http} from './../../utils/util'

Page({ 
  data: {
    motto: 'Hello World',
    userInfo: {},
    hasUserInfo: false,
    canIUse: wx.canIUse('button.open-type.getUserProfile'),
    loading: false
  },
  //事件处理函数
  bindViewTap: function() {
    wx.navigateTo({
      url: '../logs/logs'
    })
  },
  onLoad: function () {
    if (app.globalData.userInfo) {
      this.setData({
        userInfo: app.globalData.userInfo,
        hasUserInfo: true
      })
    } else if (this.data.canIUse){
      // 由于 getUserInfo 是网络请求，可能会在 Page.onLoad 之后才返回
      // 所以此处加入 callback 以防止这种情况
      app.userInfoReadyCallback = res => {
        this.setData({
          userInfo: res.userInfo,
          hasUserInfo: true
        })
      }
    } else {
      // 在没有 open-type=getUserInfo 版本的兼容处理
      wx.getUserInfo({
        success: res => {
          app.globalData.userInfo = res.userInfo
          this.setData({
            userInfo: res.userInfo,
            hasUserInfo: true
          })
        }
      })
    }
    // 2.设置屏幕高度
    this.setHeight();
  },
  onShow() {
    this.login();
  },
  /**
   * 登录
   */
  login() {
    let self = this;
    self.setData({
      loading: true
    })
    // 登录
    wx.showLoading({
      title: '数据加载中......',
    })
    wx.login({ 
      success: res => {
        if (res.errMsg === 'login:ok') {
          // 发送 res.code 到后台换取 openId, sessionKey, unionId
          $http.get({ 
            url: '/key',
            data: {'code': res.code}, 
            success(response) { 
              if (response.data.code === 200) {
                console.log("获取到了结果，内容是：" + response.data.data);
                let data = JSON.parse(response.data.data);
                wx.setStorageSync('sessionKey', data.session_key);
                wx.setStorageSync('openId', data.openid);
                setTimeout(() => {
                  wx.hideLoading();
                  self.setData({
                    loading: false
                  })
                }, 2000)
              } else {
                wx.showToast({
                  title: response.data.msg,
                  icon: 'error',
                  duration: 2000 
                });
                wx.hideLoading();
                self.setData({
                  loading: false
                })
              }
            },
            fail() {
              wx.showToast({
                title: '网络出错',
                icon: 'error',
                duration: 2000 
              });
              wx.hideLoading();
              self.setData({
                loading: false
              })
            }
          })
        }
      }
    })
  },
  /**
   * 设置屏幕高度
   */
  setHeight() {
    let {windowHeight} = wx.getSystemInfoSync();
    this.setData({
      // 使用自定义导航栏时页面的高度
      // windowHeight: (windowHeight - wx.getStorageSync('statusBarHeight')
      //     - wx.getStorageSync('navigationBarHeight')) + 'px',
      // 不使用自定义导航栏时页面的高度
      windowHeight: windowHeight + 'px'
    })
  },
  getUserInfo: function(e) {
    app.globalData.userInfo = e.detail.userInfo
    this.setData({
      userInfo: e.detail.userInfo,
      hasUserInfo: true
    })
  },
  /**
   * 获取用户的手机号码
   * @param {加密的数据} e 
   */
  getPhoneNumber(e) {
    if (this.data.loading) {
      return;
    }
    let sessionKey = wx.getStorageSync('sessionKey');
    let encryptedData = e.detail.encryptedData;
    let iv = e.detail.iv;
    $http.post({
      url: '/getPhone',
      data: {'sessionKey': sessionKey, 'encryptedData': encryptedData, 'iv': iv},
      success(res) {
        if (res.data.code == 200) {
          let data = res.data.data;
          wx.setStorageSync('phone', data.phone);
          wx.setStorageSync('plateNumber', data.plateNumber);
          wx.setStorageSync('name', data.name);
          wx.setStorageSync('dept', data.dept);
          wx.setStorageSync('binded', data.binded);
          wx.switchTab({
            url: '/pages/home/home',
          })
        } else {
          wx.showToast({
            title: res.data.msg,
            icon: 'error',
            duration: 2000
          })
        }
      },
      fail() {
        wx.showToast({
          title: '网络出错',
          icon: 'error',
          duration: 2000
        })
      }
    })
  }
})
